﻿using System;
using System.Collections.Generic;
using System.ServiceModel;

namespace Service_Gallery
{
    // REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom d'interface "IService" à la fois dans le code et le fichier de configuration.
    [ServiceContract]
    public interface IService
    {
        // Opération sur les users
        [OperationContract]
        string addUser(string name, string login, string password);

        [OperationContract]
        bool deleteUser(string userId);

        [OperationContract]
        List<string> getUserList();

        [OperationContract]
        string getUserInfo(string userId);

        [OperationContract]
        string connectUser(string login, string password);


        // Opération sur les users albums
        [OperationContract]
        bool allowUserAlbum(string albumId, string userId, int permission);

        [OperationContract]
        bool disallowUserAlbum(string albumId, string userId);

        [OperationContract]
        List<string> getUserAlbum(string userId);

        [OperationContract]
        List<string> getViewableAlbum(string userId, int permission);


        // Opération sur les albums
        [OperationContract]
        string addAlbum(string name, string userId);

        [OperationContract]
        bool deleteAlbum(string albumId);

        [OperationContract]
        List<string> getAlbumList();

        [OperationContract]
        string getAlbumInfo(string albumId);


        // Opération sur les albums pictures
        [OperationContract]
        List<string> getAlbumPicture(string albumId);


        // Opération sur les pictures
        [OperationContract]
        string addPicture(string albumId, string name, byte[] picture);

        [OperationContract]
        bool deletePicture(string pictureId);

        [OperationContract]
        byte[] getPicture(String pictureId);

        [OperationContract]
        List<string> getPictureList();

        [OperationContract]
        string getPictureInfo(string pictureId);
    }
}
